package at.ac.tuwien.lsds.schedule;

import at.ac.tuwien.lsds.exception.SchedulerException;
import at.ac.tuwien.lsds.schedule.strategy.ScheduleStrategy;

public interface Scheduler {
	/**
	 * get the scheduling strategy
	 * @return the scheduling strategy
	 */
	public ScheduleStrategy getScheduleStrategy();
	
	/**
	 * set the scheduling strategy
	 * @param strategy 
	 */
	public void setScheduleStrategy(ScheduleStrategy strategy);
	

	
	/**
	 * starts the scheduling. Reads the input data, executes the applications 
	 * and if it finished the output data will be written.
	 * @throws SchedulerException if the scheduling strategy was not set or it
	 * cannot read the input data or if something goes wrong during the execution
	 */
	public void schedule() throws SchedulerException;
}
